问题描述
插上 TypeC 后 log 显示为 USB_FLOATING_CHARGER , 正常的应该是 USB_SDP_CHARGER
1 | [ 35.192416] rk818-charger: pmic: plug in |
解决方案
由于usb 3.0的type-c接口需要支持不同电压的外设(5V, 12V等),如果不做控制,那么设置12V接5V的外设将会出问题。
fusb302可以实现此控制,根据不同的外设电压来调整电流。
FUSB302 框图:
参考设计:
其中要注意的是INT_N引脚,此pin会接到processor端的gpio,当有usb插拔时,INT_N pin会被拉低,以通知cpu通过I2C去读取USB状态信息,如果dts中gpio配置得不对,usb也将无法被识别。
调试的时候可以看下/proc/interrupts中有没有fusb302的中断信息,或者直接在驱动(drivers/mfd/fusb302.c)中加Log。
rk3399-mid-818-android.dts:
1 | fusb0: fusb30x@22 { |
正常 Log 如下:
1 | [ 3479.628913] fusb302 4-0022: CC connected in 0 as UFP |